﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DTO_MechSysWeb;
using BLL_MechSysWeb;
using System.Web.Security;

namespace WEB_MechSysWeb.Paginas_Publico
{
    public partial class PagTrabalheConosco : System.Web.UI.Page
    {
      
        DTOEndereco dtoEndereco = new DTOEndereco();       
        DTOUnidadeFederal dtoUnidadeFederal = new DTOUnidadeFederal();
        BLLUtilidades bllUtilidades = new BLLUtilidades();       
        BLLEndereco bllEndereco = new BLLEndereco();       
        BLLUnidadeFederal bllUnidadeFederal = new BLLUnidadeFederal();
        BLLCurriculo bllCurriculo = new BLLCurriculo();
        DTOCurriculo dtoCurriculo = new DTOCurriculo();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack) // Cada postback gera um captcha
            {
                imgCaptcha.ImageUrl = "Captcha.aspx";
                txtCaptcha.Text = "";
            }
            List<DTOUnidadeFederal> lstEstados = bllUnidadeFederal.BuscarEstadosCadastrados();

            foreach (DTOUnidadeFederal dtoUnidadeFederal in lstEstados)
            {
                if (dtoUnidadeFederal != null)
                {
                    ddlEstado.Items.Add(new ListItem(dtoUnidadeFederal.Nome, dtoUnidadeFederal.UFID.ToString()));
                }

            }

        }

        public bool CheckCaptcha()
        {
            string strCaptcha = txtCaptcha.Text;
            if (Session["CaptchaImageText"].ToString() == strCaptcha)
                return true;
            else
                return false;
        }

        public void Habilitar(bool status)
        {
            txtNome.Enabled = status;
            txtSobrenome.Enabled = status;
            txtDataNascimento.Enabled = status;
            rblSexo.Enabled = status;
            ddlEstadoCivil.Enabled = status;
            txtTelefone.Enabled = status;
            txtCelular.Enabled = status;
            txtEmail.Enabled = status;
            FileUploadImagem.Enabled = status;
            txtCEP.Enabled = status;
            txtRua.Enabled = status;
            txtNumero.Enabled = status;
            txtComplemento.Enabled = status;
            txtBairro.Enabled = status;
            txtCidade.Enabled = status;            
            txtCaptcha.Enabled = status;
            txtFacebook.Enabled = status;
            txtLinkedin.Enabled = status;
            ddlEscolaridade.Enabled = status;
            txtAreas.Enabled = status;
            txtQualificacoes.Enabled = status;
            txtObjetivos.Enabled = status;
            txtLocal.Enabled = status;
            txtMesInicio.Enabled = status;
            txtMesFim.Enabled = status;
            txtMesFim.Enabled = status;
            txtAnoFim.Enabled = status;
            txtDescricao.Enabled = status;

            btnCadastrar.Enabled = status;
        }

        public void LimparCampos()
        { 
            txtNome.Text = string.Empty;
            txtSobrenome.Text = string.Empty;
            txtCPF.Text = string.Empty;
            txtDataNascimento.Text = string.Empty;
            txtTelefone.Text = string.Empty;
            txtCelular.Text = string.Empty;
            txtEmail.Text = string.Empty;
        
            txtCEP.Text = string.Empty;
            txtRua.Text = string.Empty;
            txtNumero.Text = string.Empty;
            txtComplemento.Text = string.Empty;
            txtBairro.Text = string.Empty;
            txtCidade.Text = string.Empty;
         
            txtCaptcha.Text = string.Empty;

            txtFacebook.Text = string.Empty;
            txtLinkedin.Text = string.Empty;
            txtAreas.Text = string.Empty;
            txtQualificacoes.Text = string.Empty;
            txtObjetivos.Text = string.Empty;
            txtLocal.Text = string.Empty;
            txtMesInicio.Text = string.Empty;
            txtMesFim.Text = string.Empty;
            txtMesFim.Text = string.Empty;
            txtAnoFim.Text = string.Empty;
            txtDescricao.Text = string.Empty;

            imgValidacaoCPF.Visible = false;   
            imgValidacaoCaptcha.Visible = false;

            lblValidacaoCPF.Text = "";     
            lblValidacaoCaptcha.Text = "";

        }

        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                int enderecoID;
                try
                {
                    if (FileUploadImagem.PostedFile != null && !string.IsNullOrEmpty(FileUploadImagem.PostedFile.FileName) && BLLUtilidades.ValidarExtensaoImagem(FileUploadImagem.PostedFile.FileName))
                    {
                        byte[] ImgDados = new byte[FileUploadImagem.PostedFile.ContentLength];
                        HttpPostedFile Imagem = FileUploadImagem.PostedFile;
                        string ImgTipo = FileUploadImagem.PostedFile.ContentType.ToString();
                        Imagem.InputStream.Read(ImgDados, 0, (int)FileUploadImagem.PostedFile.ContentLength);

                        dtoCurriculo.ImagemPerfil = ImgDados;
                        dtoCurriculo.ImagemTipo = ImgTipo;
                    }
                    else
                    {
                        Mensagem.ExibirEmUP("Arquivo de imagem inválido!");
                    }

                    dtoEndereco.Rua = txtRua.Text;
                    dtoEndereco.Numero = txtNumero.Text;
                    dtoEndereco.Bairro = txtBairro.Text;
                    dtoEndereco.Complemento = txtComplemento.Text;
                    dtoEndereco.Cidade = txtCidade.Text;
                    dtoEndereco.Estado = Int32.Parse(ddlEstado.SelectedValue);
                    dtoEndereco.CEP = txtCEP.Text.Replace(".", "").Replace("-", "");

                    bllEndereco.Inserir(dtoEndereco);

                    enderecoID = bllEndereco.BuscarUltimoEnderecoID();

                    dtoCurriculo.Nome = txtNome.Text;
                    dtoCurriculo.Sobrenome = txtSobrenome.Text;
                    dtoCurriculo.Sexo = Convert.ToChar(rblSexo.SelectedValue);
                    dtoCurriculo.CPF = txtCPF.Text.Replace(".", "").Replace("-", "");
                    dtoCurriculo.EstadoCivil = Convert.ToInt16(ddlEstadoCivil.SelectedValue);
                    dtoCurriculo.DataNascimento = Convert.ToDateTime(txtDataNascimento.Text);
                    dtoCurriculo.Telefone = txtTelefone.Text.Replace("(", "").Replace(")", "").Replace("-", "");
                    dtoCurriculo.Celular = txtCelular.Text.Replace("(", "").Replace(")", "").Replace("-", "");
                    dtoCurriculo.Email = txtEmail.Text.Replace(" ", "").ToLower();                  
                    dtoCurriculo.EnderecoID = enderecoID;
                    dtoCurriculo.Facebook = txtFacebook.Text;
                    dtoCurriculo.Linkedin = txtLinkedin.Text;
                    dtoCurriculo.Escolaridade = Convert.ToInt16(ddlEscolaridade.SelectedValue);
                    dtoCurriculo.AreaInteresse = txtAreas.Text;
                    dtoCurriculo.Qualificacao = txtQualificacoes.Text;
                    dtoCurriculo.Objetivo = txtObjetivos.Text;
                    dtoCurriculo.Local = txtLocal.Text;
                    dtoCurriculo.MesInicio = txtMesInicio.Text;
                    dtoCurriculo.AnoInicio = txtAnoInicio.Text;
                    dtoCurriculo.MesFim = txtMesFim.Text;
                    dtoCurriculo.AnoFim = txtAnoFim.Text;
                    dtoCurriculo.Descricao = txtDescricao.Text;
                
                    bllCurriculo.Inserir(dtoCurriculo);


                    Mensagem.ExibirEmUP("Currículo enviado com sucesso!");
                    LimparCampos();

                }
                catch (Exception ex)
                {
                    bllEndereco.Excluir(dtoCurriculo.EnderecoID);

                    Mensagem.ExibirEmUP("Não foi possível enviar o currículo!");
                }
            }
            else
            {
                Mensagem.ExibirEmUP("Dados incompletos!\nVerifique se os campos foram preenchidos corretamente.");
            }

        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparCampos();
            Habilitar(true);
        }

        protected void txtCPF_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtCPF.Text.Replace(".", "").Replace("-", "").Replace("_", "")))
            {
                string cpf = string.Format("{0:00000000000}", txtCPF.Text.Replace(".", "").Replace("-", ""));
                try
                {
                    imgValidacaoCPF.Visible = true;
                    if (BLLUtilidades.ValidarCPF(cpf))
                    {
                        Habilitar(true);
                        imgValidacaoCPF.ImageUrl = "~/Imagens/disponivel.png";
                    }
                    else
                    {
                        imgValidacaoCPF.ImageUrl = "~/Imagens/indisponivel.jpg";
                        lblValidacaoCPF.Text = "*CPF Inválido!";
                        txtCPF.Focus();
                        Habilitar(false);
                    }
                }
                catch
                {
                    imgValidacaoCPF.ImageUrl = "~/Imagens/indisponivel.jpg";
                    lblValidacaoCPF.Text = "*CPF Inválido!";
                    txtCPF.Focus();
                }
            }
            else
            {
                imgValidacaoCPF.Visible = false;
            }
        }    

        protected void txtCaptcha_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtCaptcha.Text))
            {
                imgValidacaoCaptcha.Visible = true;
                if (CheckCaptcha())
                {
                    imgValidacaoCaptcha.ImageUrl = "~/Imagens/disponivel.png";
                }
                else
                {
                    imgValidacaoCaptcha.ImageUrl = "~/Imagens/indisponivel.jpg";
                    lblValidacaoCaptcha.Text = "Sequência incorreta!";
                }
            }
            else
            {
                lblValidacaoCaptcha.Text = "";
                imgValidacaoCaptcha.Visible = false;
            }
        }

        protected void txtCEP_TextChanged(object sender, EventArgs e)
        {
            txtRua.Focus();
        }

        protected void CustomValidatorSexo_ServerValidate(object source, ServerValidateEventArgs args)
        {
            try
            {
                char selectedValue = Convert.ToChar(rblSexo.SelectedValue);

                if (selectedValue != 'M' && selectedValue != 'F')
                {
                    args.IsValid = false;
                }

                args.IsValid = true;
            }
            catch (Exception)
            {
                throw;
            }
        }

        protected void CustomValidatorCPF_ServerValidate(object source, ServerValidateEventArgs args)
        {
            try
            {
                string cpf = string.Format("{0:00000000000}", txtCPF.Text.Replace(".", "").Replace("-", ""));

                if (!BLLUtilidades.ValidarCPF(txtCPF.Text))
                {
                    args.IsValid = false;
                }

                args.IsValid = true;
            }
            catch (Exception)
            {
                throw;
            }
        }    

        protected void CustomValidatorCaptcha_ServerValidate(object source, ServerValidateEventArgs args)
        {
            try
            {
                if (!CheckCaptcha())
                {
                    args.IsValid = false;
                }

                args.IsValid = true;
            }
            catch (Exception)
            {
                throw;
            }
        }        
        
    }
}